package pcsr.hwVirtualization;

import java.util.Collection;

/**
 * Establish the minimal contract to be implemented by a driver, in order to be used in PCSR.
 * 
 * @author Paulo Fagundes
 *
 * @see IRobotDriverObservable
 * @see IRobotController
 * 
 */
public interface IDriverActions {

	/**
	 * Sets a new <code>Actuator</code> state into the driver.
	 * @param actuator The new <code>Actuator</code> state.
	 * @see Actuator
	 */
	void SetActuatorStatus( final Actuator actuator );
	
	/**
	 * Sets a new <code>Sensor</code> state into the driver.
	 * @param sensor The new <code>Sensor</code> state.
	 * @see Sensor
	 */
	void SetSensorStatus( final Sensor sensor );

	/**
	 * Gets all sensors that can be managed by PCSR.
	 * @return Collection of <code>Sensor</code>s.
	 * @see Sensor
	 */
	Collection<Sensor> GetAllSensors();
	
	/**
	 * Gets all actuators that can be managed by PCSR.
	 * @return Collection of <code>Actuator</code>s.
	 * @see Actuator
	 */
	Collection<Actuator> GetAllActuators();
	
	/**
	 * Gets information about the robot being managed by PCSR.
	 * @return The information about the robot.
	 * @see RobotInfo
	 */
	RobotInfo GetRobotInfo( );
		

	void Initialize();
}
